package com.yhk.wuchat.common.user.domain.entity;

import cn.hutool.core.util.StrUtil;
import lombok.Data;

import java.io.Serializable;
import java.util.Objects;
import java.util.Optional;

/**
 * @version 1.0
 * @Author moresuo
 * @Date 2024/4/16 22:34
 * @注释
 */
@Data
public class IpInfo implements Serializable {
    //注册时的ip
    private String createIp;
    //注册时的ip详情
    private IpDetail createIpDetail;
    //最新登录的ip
    private String updateIp;
    //最新登录的ip详情
    private IpDetail updateIpDetail;

    /**
     * 更新用户IP
     * @param ip
     */
    public void refreshIp(String ip){
        if(StrUtil.isBlank(ip)){
            return;
        }
        if (StrUtil.isBlank(createIp)) {
            //设置注册时的ip
            createIp = ip;
        }
        updateIp=ip;
    }

    /**
     * 是否需要刷新ip详情
     * @return
     */
    public String needRefreshIp() {
        boolean notNeedRefresh = Optional.ofNullable(updateIpDetail).map(IpDetail::getIp)
                .filter(ip -> Objects.equals(ip, updateIp))
                .isPresent();
        return notNeedRefresh? null : updateIp;
    }

    /**
     * 刷新ip详情
     * @param ipDetail
     */
    public void refreshIpDetail(IpDetail ipDetail) {
        if(Objects.equals(createIp,ipDetail.getIp())){
            createIpDetail=ipDetail;
        }
        if(Objects.equals(updateIp,ipDetail.getIp())){
            updateIpDetail=ipDetail;
        }
    }
}
